<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta http-equiv="cache-control" content="no-cache">
<title>Genivia - smdevp.c File Reference</title>
<link href="genivia_tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="genivia_content.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="top">
 <div id="titlearea">
  <table height="72px" width="100%" cellspacing="0" cellpadding="0">
   <tbody>
    <tr>
     <td width="10%">&nbsp;</td>
     <td width="175px"><a href="http://www.genivia.com"><img alt="Genivia" src="GeniviaLogo2_trans_noslogan.png"/></a></td>
     <td class="tab_home"><a href="http://www.genivia.com">Home</a></td>
     <td class="tab_home"><a href="http://www.genivia.com/docs.html">Documentation</a></td>
     <td>
      <div style="float: right; font-size: 18px; font-weight: bold;">smdevp.c File Reference</div>
      <br>
      <div style="float: right; font-size: 10px;">updated Tue Feb 9 2016</div>
     </td>
     <td width="10%">&nbsp;</td>
    </tr>
   </tbody>
  </table>
 </div>
<!-- Generated by Doxygen 1.8.10 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_b4c3aec6cd8f28418150dce663061cfa.html">plugin</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">smdevp.c File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="smdevp_8h.html">smdevp.h</a>&quot;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for smdevp.c:</div>
<div class="dyncontent">
<div class="center"><img src="smdevp_8c__incl.png" border="0" usemap="#smdevp_8c" alt=""/></div>
<map name="smdevp_8c" id="smdevp_8c">
<area shape="rect" id="node3" href="smdevp_8h.html" title="smdevp.h" alt="" coords="194,83,272,111"/>
</map>
</div>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ad3a09ffe1e20e36549c841ae7bad1230"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="smdevp_8c.html#ad3a09ffe1e20e36549c841ae7bad1230">soap_smd_send</a> (struct soap *soap, const char *buf, size_t len)</td></tr>
<tr class="memdesc:ad3a09ffe1e20e36549c841ae7bad1230"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback to intercept messages for digest or signature computation/verification.  <a href="#ad3a09ffe1e20e36549c841ae7bad1230">More...</a><br /></td></tr>
<tr class="separator:ad3a09ffe1e20e36549c841ae7bad1230"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0048138cdff0c019be36fbbb74eb4964"><td class="memItemLeft" align="right" valign="top">static size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="smdevp_8c.html#a0048138cdff0c019be36fbbb74eb4964">soap_smd_recv</a> (struct soap *soap, char *buf, size_t len)</td></tr>
<tr class="memdesc:a0048138cdff0c019be36fbbb74eb4964"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback to intercept messages for digest or signature computation/verification.  <a href="#a0048138cdff0c019be36fbbb74eb4964">More...</a><br /></td></tr>
<tr class="separator:a0048138cdff0c019be36fbbb74eb4964"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a89e6e669161a3023489f7d2a4b154ea8"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="smdevp_8c.html#a89e6e669161a3023489f7d2a4b154ea8">soap_smd_check</a> (struct soap *soap, struct <a class="el" href="structsoap__smd__data.html">soap_smd_data</a> *data, int err, const char *msg)</td></tr>
<tr class="memdesc:a89e6e669161a3023489f7d2a4b154ea8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check result of init/update/final smdevp engine operations.  <a href="#a89e6e669161a3023489f7d2a4b154ea8">More...</a><br /></td></tr>
<tr class="separator:a89e6e669161a3023489f7d2a4b154ea8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a358684027d81577215163533f34b971f"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="smdevp_8c.html#a358684027d81577215163533f34b971f">soap_smd_size</a> (int alg, const void *key)</td></tr>
<tr class="memdesc:a358684027d81577215163533f34b971f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of octets needed to store the digest or signature returned by soap_smd_end.  <a href="#a358684027d81577215163533f34b971f">More...</a><br /></td></tr>
<tr class="separator:a358684027d81577215163533f34b971f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad8b665c8e8844eca8916f4b16b0ce9c5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="smdevp_8c.html#ad8b665c8e8844eca8916f4b16b0ce9c5">soap_smd_begin</a> (struct soap *soap, int alg, const void *key, int keylen)</td></tr>
<tr class="memdesc:ad8b665c8e8844eca8916f4b16b0ce9c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initiates a digest or signature computation.  <a href="#ad8b665c8e8844eca8916f4b16b0ce9c5">More...</a><br /></td></tr>
<tr class="separator:ad8b665c8e8844eca8916f4b16b0ce9c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f18dbae37de8942e080d45dd3480a7b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="smdevp_8c.html#a8f18dbae37de8942e080d45dd3480a7b">soap_smd_end</a> (struct soap *soap, char *buf, int *len)</td></tr>
<tr class="memdesc:a8f18dbae37de8942e080d45dd3480a7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Completes a digest or signature computation. Also deallocates temporary storage allocated by <a class="el" href="smdevp_8c.html#ad8b665c8e8844eca8916f4b16b0ce9c5" title="Initiates a digest or signature computation. ">soap_smd_begin()</a>, so MUST be called after <a class="el" href="smdevp_8c.html#ad8b665c8e8844eca8916f4b16b0ce9c5" title="Initiates a digest or signature computation. ">soap_smd_begin()</a>.  <a href="#a8f18dbae37de8942e080d45dd3480a7b">More...</a><br /></td></tr>
<tr class="separator:a8f18dbae37de8942e080d45dd3480a7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8835cbedd7b123915f673bf7b0e8f0cc"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="smdevp_8c.html#a8835cbedd7b123915f673bf7b0e8f0cc">soap_smd_init</a> (struct soap *soap, struct <a class="el" href="structsoap__smd__data.html">soap_smd_data</a> *data, int alg, const void *key, int keylen)</td></tr>
<tr class="memdesc:a8835cbedd7b123915f673bf7b0e8f0cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initiates a (signed) digest computation.  <a href="#a8835cbedd7b123915f673bf7b0e8f0cc">More...</a><br /></td></tr>
<tr class="separator:a8835cbedd7b123915f673bf7b0e8f0cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f9631955eabdcf338d0178d2d90ea50"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="smdevp_8c.html#a1f9631955eabdcf338d0178d2d90ea50">soap_smd_update</a> (struct soap *soap, struct <a class="el" href="structsoap__smd__data.html">soap_smd_data</a> *data, const char *buf, size_t len)</td></tr>
<tr class="memdesc:a1f9631955eabdcf338d0178d2d90ea50"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates (signed) digest computation with message part.  <a href="#a1f9631955eabdcf338d0178d2d90ea50">More...</a><br /></td></tr>
<tr class="separator:a1f9631955eabdcf338d0178d2d90ea50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d7f8b4fdcfe0afc13fef37fd8c46f5d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="smdevp_8c.html#a8d7f8b4fdcfe0afc13fef37fd8c46f5d">soap_smd_final</a> (struct soap *soap, struct <a class="el" href="structsoap__smd__data.html">soap_smd_data</a> *data, char *buf, int *len)</td></tr>
<tr class="memdesc:a8d7f8b4fdcfe0afc13fef37fd8c46f5d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finalizes (signed) digest computation and returns digest or signature.  <a href="#a8d7f8b4fdcfe0afc13fef37fd8c46f5d">More...</a><br /></td></tr>
<tr class="separator:a8d7f8b4fdcfe0afc13fef37fd8c46f5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ad8b665c8e8844eca8916f4b16b0ce9c5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int soap_smd_begin </td>
          <td>(</td>
          <td class="paramtype">struct soap *&#160;</td>
          <td class="paramname"><em>soap</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>alg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&#160;</td>
          <td class="paramname"><em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>keylen</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initiates a digest or signature computation. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir"></td><td class="paramname">soap</td><td>context </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">alg</td><td>is the digest or signature (sign/verification) algorithm used </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>is a HMAC key or pointer to EVP_PKEY object or NULL for digests </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">keylen</td><td>is the length of the HMAC key or 0 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SOAP_OK, SOAP_EOM, or SOAP_SSL_ERROR </dd></dl>

</div>
</div>
<a class="anchor" id="a89e6e669161a3023489f7d2a4b154ea8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int soap_smd_check </td>
          <td>(</td>
          <td class="paramtype">struct soap *&#160;</td>
          <td class="paramname"><em>soap</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structsoap__smd__data.html">soap_smd_data</a> *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>ok</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>msg</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Check result of init/update/final smdevp engine operations. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir"></td><td class="paramname">soap</td><td>context </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">data</td><td>smdevp engine context </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ok</td><td>EVP error value </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">msg</td><td>error message </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SOAP_OK or SOAP_SSL_ERROR </dd></dl>

</div>
</div>
<a class="anchor" id="a8f18dbae37de8942e080d45dd3480a7b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int soap_smd_end </td>
          <td>(</td>
          <td class="paramtype">struct soap *&#160;</td>
          <td class="paramname"><em>soap</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Completes a digest or signature computation. Also deallocates temporary storage allocated by <a class="el" href="smdevp_8c.html#ad8b665c8e8844eca8916f4b16b0ce9c5" title="Initiates a digest or signature computation. ">soap_smd_begin()</a>, so MUST be called after <a class="el" href="smdevp_8c.html#ad8b665c8e8844eca8916f4b16b0ce9c5" title="Initiates a digest or signature computation. ">soap_smd_begin()</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir"></td><td class="paramname">soap</td><td>context </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">buf</td><td>contains signature for verification (when using a SOAP_SMD_VRFY algorithm) or NULL for cleanup </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">buf</td><td>is populated with the digest or signature with maximum length soap_smd_size(alg, key) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">len</td><td>points to length of signature to verify (when using a SOAP_SMD_VRFY algorithm) or NULL for cleanup </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">len</td><td>points to length of stored digest or signature (when not NULL) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SOAP_OK, SOAP_USER_ERROR, or SOAP_SSL_ERROR </dd></dl>

</div>
</div>
<a class="anchor" id="a8d7f8b4fdcfe0afc13fef37fd8c46f5d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int soap_smd_final </td>
          <td>(</td>
          <td class="paramtype">struct soap *&#160;</td>
          <td class="paramname"><em>soap</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structsoap__smd__data.html">soap_smd_data</a> *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Finalizes (signed) digest computation and returns digest or signature. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir"></td><td class="paramname">soap</td><td>context </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">data</td><td>smdevp engine context </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">buf</td><td>contains signature for verification (SOAP_SMD_VRFY algorithms) </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">buf</td><td>is populated with the digest or signature </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">len</td><td>points to length of signature to verify (SOAP_SMD_VRFY algorithms) </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">len</td><td>points to length of stored digest or signature (pass NULL if you are not interested in this value) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SOAP_OK or SOAP_SSL_ERROR </dd></dl>

</div>
</div>
<a class="anchor" id="a8835cbedd7b123915f673bf7b0e8f0cc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int soap_smd_init </td>
          <td>(</td>
          <td class="paramtype">struct soap *&#160;</td>
          <td class="paramname"><em>soap</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structsoap__smd__data.html">soap_smd_data</a> *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>alg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&#160;</td>
          <td class="paramname"><em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>keylen</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initiates a (signed) digest computation. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir"></td><td class="paramname">soap</td><td>context </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">data</td><td>smdevp engine context </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">alg</td><td>is algorithm to use </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>is key to use or NULL for digests </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">keylen</td><td>is length of HMAC key (when provided) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SOAP_OK or SOAP_SSL_ERROR </dd></dl>

</div>
</div>
<a class="anchor" id="a0048138cdff0c019be36fbbb74eb4964"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static size_t soap_smd_recv </td>
          <td>(</td>
          <td class="paramtype">struct soap *&#160;</td>
          <td class="paramname"><em>soap</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Callback to intercept messages for digest or signature computation/verification. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir"></td><td class="paramname">soap</td><td>context </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">buf</td><td>buffer </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">len</td><td>max buffer length </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>message size in buffer or 0 on error. </dd></dl>

</div>
</div>
<a class="anchor" id="ad3a09ffe1e20e36549c841ae7bad1230"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int soap_smd_send </td>
          <td>(</td>
          <td class="paramtype">struct soap *&#160;</td>
          <td class="paramname"><em>soap</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Callback to intercept messages for digest or signature computation/verification. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir"></td><td class="paramname">soap</td><td>context </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">buf</td><td>message </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">len</td><td>message length </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SOAP_OK or SOAP_SSL_ERROR </dd></dl>

</div>
</div>
<a class="anchor" id="a358684027d81577215163533f34b971f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t soap_smd_size </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>alg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&#160;</td>
          <td class="paramname"><em>key</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns the number of octets needed to store the digest or signature returned by soap_smd_end. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">alg</td><td>is the digest or signature algorithm to be used </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>is a pointer to an EVP_PKEY object for RSA/DSA signatures or NULL for digests and HMAC </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>size_t number of octets that is needed to hold digest or signature </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="smdevp_8c.html#a8f18dbae37de8942e080d45dd3480a7b" title="Completes a digest or signature computation. Also deallocates temporary storage allocated by soap_smd...">soap_smd_end</a></dd></dl>
<p>The values returned for digests are SOAP_SMD_MD5_SIZE, SOAP_SMD_SHA1_SIZE, SOAP_SMD_SHA256_SIZE, SOAP_SMD_SHA512_SIZE. </p>

</div>
</div>
<a class="anchor" id="a1f9631955eabdcf338d0178d2d90ea50"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int soap_smd_update </td>
          <td>(</td>
          <td class="paramtype">struct soap *&#160;</td>
          <td class="paramname"><em>soap</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structsoap__smd__data.html">soap_smd_data</a> *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Updates (signed) digest computation with message part. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir"></td><td class="paramname">soap</td><td>context </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">data</td><td>smdevp engine context </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">buf</td><td>contains message part </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">len</td><td>of message part </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SOAP_OK or SOAP_SSL_ERROR </dd></dl>

</div>
</div>
</div><!-- contents -->
<hr class="footer">
<address class="footer">
Copyright (C) 2016, Robert van Engelen, Genivia Inc., All Rights Reserved.
</address>
<address class="footer"><small>
Converted on Tue Feb 9 2016 13:12:04 by <a target="_blank" href="http://www.doxygen.org/index.html">Doxygen</a> 1.8.10</small></address>
<br>
<div style="height: 246px; background: #DBDBDB;">
</body>
</html>
